home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-12-04 | 14.1 KB | 833 lines | [TEXT/KAHL] |
- //• Wire frame shuttle viewer
- //• by Eddy Vasile 70451,3333 compuserve
- //• Plot points collected from a fortran bbs in 86
- //• To compile this program:
- //• 1st: if this file (shuttle.p) is not in a sit file along with a resource file, then:
- //• create a WIND resource shuttle.pi.rsrc (use option p for pi)
- //• Make sure that the size of the window is the largest possible by
- //• stretching it as far as resedit will allow it. Change the resource id to 400
- //• and give it an adequate name like shuttle viewer. Make sure you click on purgeable
- //• 2nd: create a project shuttle.pi and then add shuttle.p (this program) at the bottom
- //• click on run options and select 'uses resource file.' Select the resource
- //• file created above or included in the sit file.
-
- //• ShuttleViewer.c
-
- #include <math.h>
- #include <sane.h>
- #include <stdlib.h>
-
- enum {
- maxa = 300,
- maxv = 124,
- maxe = 259,
- r1 = 400,
- maxd = 631
- };
-
- short oxangle, oyangle, ozangle, Pc, Ec;
-
- double CH, SH,
- CP, SP,
- CB, SB,
- XV, YV, ZV,
- X, Y, Z,
- X3, Y3, Z3,
- AM, BM, CM, DM, EM, FM, GM, HM, IM,
- D, P, B, H,
- U,
- Vc,
- U1, V1;
-
- double V [maxa] [4];
- double E [maxa];
- double data [maxd];
- WindowPtr w;
- long ticks;
-
- void setdataarray ()
- {
- data[1] = 0;
- data[2] = -2;
- data[3] = 46;
- data[4] = 2;
- data[5] = -3;
- data[6] = 46;
- data[7] = 2;
- data[8] = -5;
- data[9] = 46;
- data[10] = 2;
- data[11] = -7;
- data[12] = 46;
- data[13] = 0;
- data[14] = -7;
- data[15] = 46;
- data[16] = -2;
- data[17] = -7;
- data[18] = 46;
- data[19] = -2;
- data[20] = -5;
- data[21] = 46;
- data[22] = -2;
- data[23] = -3;
- data[24] = 46;
- data[25] = 0;
- data[26] = -1;
- data[27] = 43;
- data[28] = 3;
- data[29] = -2;
- data[30] = 43;
- data[31] = 4;
- data[32] = -5;
- data[33] = 43;
- data[34] = 3;
- data[35] = -7;
- data[36] = 43;
- data[37] = 0;
- data[38] = -8;
- data[39] = 43;
- data[40] = -3;
- data[41] = -7;
- data[42] = 43;
- data[43] = -4;
- data[44] = -5;
- data[45] = 43;
- data[46] = -3;
- data[47] = -2;
- data[48] = 43;
- data[49] = 0;
- data[50] = 2;
- data[51] = 38;
- data[52] = 5;
- data[53] = 0;
- data[54] = 38;
- data[55] = 6;
- data[56] = -4;
- data[57] = 38;
- data[58] = 4;
- data[59] = -8;
- data[60] = 38;
- data[61] = 0;
- data[62] = -9;
- data[63] = 38;
- data[64] = -4;
- data[65] = -8;
- data[66] = 38;
- data[67] = -6;
- data[68] = -4;
- data[69] = 38;
- data[70] = -5;
- data[71] = 0;
- data[72] = 38;
- data[73] = 0;
- data[74] = 4;
- data[75] = 33;
- data[76] = 5;
- data[77] = 1;
- data[78] = 33;
- data[79] = 6;
- data[80] = -5;
- data[81] = 33;
- data[82] = 4;
- data[83] = -9;
- data[84] = 33;
- data[85] = 0;
- data[86] = -10;
- data[87] = 33;
- data[88] = -4;
- data[89] = -9;
- data[90] = 33;
- data[91] = -6;
- data[92] = -5;
- data[93] = 33;
- data[94] = -5;
- data[95] = 1;
- data[96] = 33;
- data[97] = 0;
- data[98] = 8;
- data[99] = 26;
- data[100] = 4;
- data[101] = 7;
- data[102] = 26;
- data[103] = 8;
- data[104] = 2;
- data[105] = 26;
- data[106] = 8;
- data[107] = -7;
- data[108] = 26;
- data[109] = 0;
- data[110] = -10;
- data[111] = 26;
- data[112] = -8;
- data[113] = -7;
- data[114] = 26;
- data[115] = -8;
- data[116] = 2;
- data[117] = 26;
- data[118] = -4;
- data[119] = 7;
- data[120] = 26;
- data[121] = 0;
- data[122] = 8;
- data[123] = 22;
- data[124] = 4;
- data[125] = 8;
- data[126] = 22;
- data[127] = 8;
- data[128] = 3;
- data[129] = 22;
- data[130] = 8;
- data[131] = -8;
- data[132] = 22;
- data[133] = 0;
- data[134] = -10;
- data[135] = 22;
- data[136] = -8;
- data[137] = -8;
- data[138] = 22;
- data[139] = -8;
- data[140] = 3;
- data[141] = 22;
- data[142] = -4;
- data[143] = 8;
- data[144] = 22;
- data[145] = 0;
- data[146] = 8;
- data[147] = 14;
- data[148] = 5;
- data[149] = 7;
- data[150] = 14;
- data[151] = 8;
- data[152] = 4;
- data[153] = 14;
- data[154] = 8;
- data[155] = -9;
- data[156] = 14;
- data[157] = 0;
- data[158] = -10;
- data[159] = 14;
- data[160] = -8;
- data[161] = -9;
- data[162] = 14;
- data[163] = -8;
- data[164] = 4;
- data[165] = 14;
- data[166] = -5;
- data[167] = 7;
- data[168] = 14;
- data[169] = 0;
- data[170] = 8;
- data[171] = 4;
- data[172] = 5;
- data[173] = 7;
- data[174] = 4;
- data[175] = 8;
- data[176] = 4;
- data[177] = 4;
- data[178] = 8;
- data[179] = -9;
- data[180] = 4;
- data[181] = 0;
- data[182] = -10;
- data[183] = 4;
- data[184] = -8;
- data[185] = -9;
- data[186] = 4;
- data[187] = -8;
- data[188] = 4;
- data[189] = 4;
- data[190] = -5;
- data[191] = 7;
- data[192] = 4;
- data[193] = 0;
- data[194] = 8;
- data[195] = -12;
- data[196] = 5;
- data[197] = 7;
- data[198] = -12;
- data[199] = 8;
- data[200] = 4;
- data[201] = -12;
- data[202] = 8;
- data[203] = -9;
- data[204] = -12;
- data[205] = 0;
- data[206] = -10;
- data[207] = -12;
- data[208] = -8;
- data[209] = -9;
- data[210] = -12;
- data[211] = -8;
- data[212] = 4;
- data[213] = -12;
- data[214] = -5;
- data[215] = 7;
- data[216] = -12;
- data[217] = 0;
- data[218] = 8;
- data[219] = -27;
- data[220] = 5;
- data[221] = 7;
- data[222] = -27;
- data[223] = 8;
- data[224] = 4;
- data[225] = -27;
- data[226] = 8;
- data[227] = -9;
- data[228] = -27;
- data[229] = 0;
- data[230] = -10;
- data[231] = -27;
- data[232] = -8;
- data[233] = -9;
- data[234] = -27;
- data[235] = -8;
- data[236] = 4;
- data[237] = -27;
- data[238] = -5;
- data[239] = 7;
- data[240] = -27;
- data[241] = 0;
- data[242] = 8;
- data[243] = -36;
- data[244] = 5;
- data[245] = 7;
- data[246] = -36;
- data[247] = 8;
- data[248] = 4;
- data[249] = -36;
- data[250] = 8;
- data[251] = -9;
- data[252] = -36;
- data[253] = 0;
- data[254] = -10;
- data[255] = -36;
- data[256] = -8;
- data[257] = -9;
- data[258] = -36;
- data[259] = -8;
- data[260] = 4;
- data[261] = -36;
- data[262] = -5;
- data[263] = 7;
- data[264] = -36;
- data[265] = 0;
- data[266] = 9;
- data[267] = -43;
- data[268] = 2;
- data[269] = 9;
- data[270] = -43;
- data[271] = 9;
- data[272] = 2;
- data[273] = -43;
- data[274] = 9;
- data[275] = -10;
- data[276] = -43;
- data[277] = 0;
- data[278] = -11;
- data[279] = -43;
- data[280] = -9;
- data[281] = -10;
- data[282] = -43;
- data[283] = -9;
- data[284] = 2;
- data[285] = -43;
- data[286] = -2;
- data[287] = 9;
- data[288] = -43;
- data[289] = 0;
- data[290] = 10;
- data[291] = -48;
- data[292] = 2;
- data[293] = 9;
- data[294] = -48;
- data[295] = 9;
- data[296] = 2;
- data[297] = -48;
- data[298] = 10;
- data[299] = -10;
- data[300] = -48;
- data[301] = 0;
- data[302] = -10;
- data[303] = -48;
- data[304] = -10;
- data[305] = -10;
- data[306] = -48;
- data[307] = -9;
- data[308] = 2;
- data[309] = -48;
- data[310] = -2;
- data[311] = 9;
- data[312] = -48;
- data[313] = 9;
- data[314] = -9;
- data[315] = 21;
- data[316] = 15;
- data[317] = -9;
- data[318] = -16;
- data[319] = 35;
- data[320] = -10;
- data[321] = -36;
- data[322] = 35;
- data[323] = -10;
- data[324] = -40;
- data[325] = -9;
- data[326] = -9;
- data[327] = 21;
- data[328] = -15;
- data[329] = -9;
- data[330] = -16;
- data[331] = -35;
- data[332] = -10;
- data[333] = -36;
- data[334] = -35;
- data[335] = -10;
- data[336] = -40;
- data[337] = 0;
- data[338] = 13;
- data[339] = -37;
- data[340] = 0;
- data[341] = 33;
- data[342] = -60;
- data[343] = 0;
- data[344] = 33;
- data[345] = -69;
- data[346] = 0;
- data[347] = 14;
- data[348] = -60;
- data[349] = 6;
- data[350] = 11;
- data[351] = -43;
- data[352] = 6;
- data[353] = 11;
- data[354] = -48;
- data[355] = 11;
- data[356] = 5;
- data[357] = -43;
- data[358] = 11;
- data[359] = 5;
- data[360] = -48;
- data[361] = -6;
- data[362] = 11;
- data[363] = -43;
- data[364] = -6;
- data[365] = 11;
- data[366] = -48;
- data[367] = -11;
- data[368] = 5;
- data[369] = -43;
- data[370] = -11;
- data[371] = 5;
- data[372] = -48;
- data[373] = -1;
- data[374] = 2;
- data[375] = 3;
- data[376] = 4;
- data[377] = 5;
- data[378] = 6;
- data[379] = 7;
- data[380] = 8;
- data[381] = 1;
- data[382] = -9;
- data[383] = 10;
- data[384] = 11;
- data[385] = 12;
- data[386] = 13;
- data[387] = 14;
- data[388] = 15;
- data[389] = 16;
- data[390] = 9;
- data[391] = -17;
- data[392] = 18;
- data[393] = 19;
- data[394] = 20;
- data[395] = 21;
- data[396] = 22;
- data[397] = 23;
- data[398] = 24;
- data[399] = 17;
- data[400] = -25;
- data[401] = 26;
- data[402] = 27;
- data[403] = 28;
- data[404] = 29;
- data[405] = 30;
- data[406] = 31;
- data[407] = 32;
- data[408] = 25;
- data[409] = -33;
- data[410] = 34;
- data[411] = 35;
- data[412] = 36;
- data[413] = 37;
- data[414] = 38;
- data[415] = 39;
- data[416] = 40;
- data[417] = 33;
- data[418] = -41;
- data[419] = 42;
- data[420] = 43;
- data[421] = 44;
- data[422] = 45;
- data[423] = 46;
- data[424] = 47;
- data[425] = 48;
- data[426] = 41;
- data[427] = -49;
- data[428] = 50;
- data[429] = 51;
- data[430] = 52;
- data[431] = 53;
- data[432] = 54;
- data[433] = 55;
- data[434] = 56;
- data[435] = 49;
- data[436] = -57;
- data[437] = 58;
- data[438] = 59;
- data[439] = 60;
- data[440] = 61;
- data[441] = 62;
- data[442] = 63;
- data[443] = 64;
- data[444] = 57;
- data[445] = -65;
- data[446] = 66;
- data[447] = 67;
- data[448] = 68;
- data[449] = 69;
- data[450] = 70;
- data[451] = 71;
- data[452] = 72;
- data[453] = 65;
- data[454] = -73;
- data[455] = 74;
- data[456] = 75;
- data[457] = 76;
- data[458] = 77;
- data[459] = 78;
- data[460] = 79;
- data[461] = 80;
- data[462] = 73;
- data[463] = -81;
- data[464] = 82;
- data[465] = 83;
- data[466] = 84;
- data[467] = 85;
- data[468] = 86;
- data[469] = 87;
- data[470] = 88;
- data[471] = 81;
- data[472] = -89;
- data[473] = 90;
- data[474] = 91;
- data[475] = 92;
- data[476] = 93;
- data[477] = 94;
- data[478] = 95;
- data[479] = 96;
- data[480] = 89;
- data[481] = -97;
- data[482] = 98;
- data[483] = 99;
- data[484] = 100;
- data[485] = 101;
- data[486] = 102;
- data[487] = 103;
- data[488] = 104;
- data[489] = 97;
- data[490] = -1;
- data[491] = 9;
- data[492] = 17;
- data[493] = 25;
- data[494] = 33;
- data[495] = 41;
- data[496] = 49;
- data[497] = 57;
- data[498] = 65;
- data[499] = 73;
- data[500] = 81;
- data[501] = 89;
- data[502] = 97;
- data[503] = -2;
- data[504] = 10;
- data[505] = 18;
- data[506] = 26;
- data[507] = 34;
- data[508] = 42;
- data[509] = 50;
- data[510] = 58;
- data[511] = 66;
- data[512] = 74;
- data[513] = 82;
- data[514] = 90;
- data[515] = 98;
- data[516] = -3;
- data[517] = 11;
- data[518] = 19;
- data[519] = 27;
- data[520] = 35;
- data[521] = 43;
- data[522] = 51;
- data[523] = 59;
- data[524] = 67;
- data[525] = 75;
- data[526] = 83;
- data[527] = 91;
- data[528] = 99;
- data[529] = -4;
- data[530] = 12;
- data[531] = 20;
- data[532] = 28;
- data[533] = 36;
- data[534] = 44;
- data[535] = 52;
- data[536] = 60;
- data[537] = 68;
- data[538] = 76;
- data[539] = 84;
- data[540] = 92;
- data[541] = 100;
- data[542] = -5;
- data[543] = 13;
- data[544] = 21;
- data[545] = 29;
- data[546] = 37;
- data[547] = 45;
- data[548] = 53;
- data[549] = 61;
- data[550] = 69;
- data[551] = 77;
- data[552] = 85;
- data[553] = 93;
- data[554] = 101;
- data[555] = -6;
- data[556] = 14;
- data[557] = 22;
- data[558] = 30;
- data[559] = 38;
- data[560] = 46;
- data[561] = 54;
- data[562] = 62;
- data[563] = 70;
- data[564] = 78;
- data[565] = 86;
- data[566] = 94;
- data[567] = 102;
- data[568] = -7;
- data[569] = 15;
- data[570] = 23;
- data[571] = 31;
- data[572] = 39;
- data[573] = 47;
- data[574] = 55;
- data[575] = 63;
- data[576] = 71;
- data[577] = 79;
- data[578] = 87;
- data[579] = 95;
- data[580] = 103;
- data[581] = -8;
- data[582] = 16;
- data[583] = 24;
- data[584] = 32;
- data[585] = 40;
- data[586] = 48;
- data[587] = 56;
- data[588] = 64;
- data[589] = 72;
- data[590] = 80;
- data[591] = 88;
- data[592] = 96;
- data[593] = 104;
- data[594] = -44;
- data[595] = 105;
- data[596] = 106;
- data[597] = 107;
- data[598] = 108;
- data[599] = 92;
- data[600] = -46;
- data[601] = 109;
- data[602] = 110;
- data[603] = 111;
- data[604] = 112;
- data[605] = 94;
- data[606] = -81;
- data[607] = 113;
- data[608] = 114;
- data[609] = 115;
- data[610] = 116;
- data[611] = 89;
- data[612] = -82;
- data[613] = 117;
- data[614] = 118;
- data[615] = -83;
- data[616] = 119;
- data[617] = 120;
- data[618] = -87;
- data[619] = 121;
- data[620] = 122;
- data[621] = -88;
- data[622] = 123;
- data[623] = 124;
- data[624] = -117;
- data[625] = 119;
- data[626] = -121;
- data[627] = 123;
- data[628] = -118;
- data[629] = 120;
- data[630] = -122;
- data[631] = 124;
- }
-
- void muck1 ()
- {
- CH = cos (H);
- SH = sin (H);
- CP = cos (P);
- SP = sin (P);
- CB = cos (B);
- SB = sin (B);
- AM = CB * CH - SH * SP * SB;
- BM = -CB * SH - SP * CH * SB;
- CM = CP * SB;
- DM = SH * CP;
- EM = CP * CH;
- FM = SP;
- GM = -CH * SB - SH * SP * CB;
- HM = SH * SB - SP * CH * CB;
- IM = CP * CB;
- }
-
- void muck2 ()
- {
- X = X - XV;
- Y = Y - YV;
- Z = Z - ZV;
- X3 = AM * X + BM * Y + CM * Z;
- Y3 = DM * X + EM * Y + FM * Z;
- Z3 = GM * X + HM * Y + IM * Z;
- U = 135 + 13.5 * D * X3 / Y3; //• Shuttle width.
- Vc = 80 - 12.5 * D * Z3 / Y3; //• Shuttle length.
- }
-
- void muck3 ()
- {
- short Ec;
-
- X = 0;
- Y = 0;
- Z = 0;
- X3 = 0;
- Y3 = 0;
- Z3 = 0;
- AM = 0;
- BM = 0;
- CM = 0;
- DM = 0;
- EM = 0;
- FM = 0;
- GM = 0;
- HM = 0;
- IM = 0;
- D = 0;
- P = 0;
- B = 0;
- H = 0;
- U = 0;
- Vc = 0;
- U1 = 0;
- V1 = 0;
- D = 120;
- P = 6.28 * oxangle / 255 - 3.1416; //• Remove "- 3.1416" to start
- B = 6.28 * ozangle / 255; //• with nose-up view.
- H = 6.28 * oyangle / 255;
-
- muck1 ();
- XV = - D * CP * SH;
- YV = - D * CP * CH;
- ZV = - D * SP;
- for (Ec = 0; Ec < maxe; Ec++) //• Starting point.
- {
- X = V [abs (ceil (E [Ec]))] [0];
- Y = V [abs (ceil (E [Ec]))] [1];
- Z = V [abs (ceil (E [Ec]))] [2];
-
- muck2 ();
-
- if (E [Ec] > 0)
- {
- MoveTo (ceil (U1 * 2 + 75), ceil (V1 + 20));
- LineTo (ceil (U * 2 + 75), ceil (Vc + 20));
- }
- U1 = U;
- V1 = Vc;
- }
- }
-
- void winit (WindowPtr *w)
- {
- w = GetNewWindow (r1, nil, (WindowPtr)-1L);
- ShowWindow (w);
- SetPort (w);
- MoveTo (50, 240);
- TextSize (18);
- TextFace (shadow);
- DrawString ("\pEddy's Shuttle Viewer");
- MoveTo (50, 260);
- TextSize (12);
- TextFace (bold);
- DrawString ("\pClick and hold button down to STOP");
- MoveTo (50, 280);
- TextSize (10);
- TextFace (italic);
- DrawString ("\pThinkPas Code by Eddy Vasile. Plot Points from anonymous source");
- MoveTo (200, 170);
- TextSize (10);
- DrawString ("\pWait for a couple of views before clicking");
- Delay (100, &ticks);
- }
-
- void initvars ()
- {
- short position, j, Ec, Pc;
-
- position = 0;
- for (Pc = 1; Pc <= maxv; Pc++)
- {
- for (j = 0; j < 3; j++)
- {
- position = position + 1;
- V [Pc] [j] = data [position] * 0.12; //• This number controls
- } //• scale. Try .2
- }
- for (Ec = 0; Ec < maxe; Ec++)
- {
- position = position + 1;
- E [Ec] = data [position];
- }
- }
-
- void mainloop ()
- {
- Rect shuttleRect;
-
- SetRect (&shuttleRect, 180, 0, 500, 200);
- while (! Button ())
- {
- FillRect (&shuttleRect, white);
- muck3 ();
- Delay (150, &ticks);
- oxangle = oxangle + 10;
- oyangle = oyangle + 10;
- ozangle = ozangle + 10;
- }
- }
-
- main ()
- {
- setdataarray ();
- initvars ();
- winit (w);
- mainloop ();
- }